//
//  main.m
//  08-类的拓展
//
//  Created by LL.F on 16/7/13.
//  Copyright © 2016年 LL.F. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "NSObject+SayHello.h"// 引入类目的.h文件
#import "NSString+GetFirstLetter.h"
#import "Dog.h"
#import "Student.h"
#import "BuyPerson.h"

int main(int argc, const char * argv[]) {
    
    /**
     *  类的扩展(Category, Entension, delegate)
     */
    
    // 1. Category(类目, 类别, 分类)为没有源代码的类扩充功能, 即系统自带的类, 我们看不到实现方法的类
    // <1> category的创建: 通过Objective-C File创建会产生两个文件 .h .m 文件名会以 类名+Category名 命名
    // <2> Category的使用: 向对应的文件中添加需要添加的方法, 引入到对应想要使用的位置
    NSObject *objc = [[NSObject alloc] init];
    [objc sayHello];
    // <3> 练习: 写一个Category, 实现获取字符串首字母并大写
    NSString *string = @"skdaisfoa";
    NSLog(@"%@", [string getFirstChar]);
    
    // 2. Extension 延展: 为能够获得源代码的类添加私有的实例变量和方法
    // <1> Extension的创建: 创建一个普通类, 延展是对这个类的补充, 所以写在.m中
    // <2> 练习:
    Dog *dog = [[Dog alloc] init];
    [dog getDogLife];
    
    // 3. Delegate 代理
    // 例子: 海外代购
    Student *stu = [[Student alloc] init];
    BuyPerson *buyPerson = [[BuyPerson alloc] init];
#warning 六. 设定代理人
    stu.delegate = buyPerson;
    [stu seeWeChat];
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    return 0;
}
